package com.asia.algorithmcode.binaryTree;

import java.util.List;

/**
 * @DESCRIPTION: 104、二叉树的最大深度
 * @USER: wanfu
 * @DATE: 2025/5/9 星期五 15:08
 */
public class MaxDepth {

    public static void main(String[] args) {
        TreeNode n1 = new TreeNode(1);
        TreeNode n2_1 = new TreeNode(2);
        TreeNode n2_2 = new TreeNode(2);
        TreeNode n3_1 = new TreeNode(3);
        TreeNode n3_2 = new TreeNode(3);
        TreeNode n4_1 = new TreeNode(4);
        TreeNode n4_2 = new TreeNode(4);
//
//        n1.left = n2_1;
//        n1.right = n2_2;
//        n2_1.left = n3_1;
//        n2_1.right = n4_1;
//        n2_2.left = n4_2;
//        n4_2.right = n3_2;

        n1.right = n2_1;
        System.out.println(new MaxDepth().maxDepth(n1));

        System.out.println(" ");
    }

    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }

    /**
     * 方法一、在深度遍历的过程中找到最大深度
     */
//    private int depth = 0;
//    public int maxDepth(TreeNode root) {
//        dfs(root, 1);
//        return depth;
//    }
//
//    private void dfs(TreeNode root, int i) {
//        if (root == null) {
//            return;
//        }
//        if (i > depth) {
//            depth = i;
//        }
//        dfs(root.left, i + 1);
//        dfs(root.right, i + 1);
//    }
}
